perm filename AUXFNS[P,JRA] blob sn#203328 filedate 1976-02-23 generic text, type T, neo UTF8
 
(DEF EQUAL
 (LAMBDA ($A $B)
   (COND ((AND  (DTPR $A)(DTPR $B))
         (AND (EQUAL (CAR $A) (CAR $B))
              (EQUAL (CDR $A) (CDR $B))))
        (T (EQ $A $B)))))
(DEF DEFEVQ (LAMBDA (AT FM)(PUTD AT FM]

(DEF DEFPROP
 (NLAMBDA (X)
   (PROG (A)
	[COND((NULL(CAAR X))(RPLACA (CAR X)(LIST(CAR(CDDR X))(CADR X)))(RETURN NIL]
	(SETQ A (CAR (CAR X)))
LOOP	(COND	[ (CDR A)
		   (SETQ A (CDR A))
		   (GO LOOP])
	(RPLACD A (CONS (CAR (CDR (CDR X))) (CONS (CAR (CDR X]

(DEF PUTPROP
 [LAMBDA (A VAL IND)
   (PROG ()
	[COND((NULL(CAR A))(RPLACA A(LIST IND VAL))(RETURN VAL]
	(SETQ A (CAR A))
LOOP	(COND	[ (EQ (CAR A) IND)
		   (RPLACA (CDR A) VAL)
		   (GO END]
		[ (CDR (CDR A))
		   (SETQ A (CDR (CDR A)))
		   (GO LOOP])
	(RPLACD (CDR A) (CONS IND (CONS VAL)))
END	(RETURN VAL]
 ]

'(DEF CAAR (LAMBDA (X) (CAR (CAR X]

'(DEF CADR (LAMBDA (X) (CAR (CDR X]

'(DEF CDAR (LAMBDA (X) (CDR (CAR X]

'(DEF CDDR (LAMBDA (X) (CDR (CDR X]
(DEF GET (LAMBDA (A IND)
   (PROG ()
	(SETQ A (CAR A))
LOOP	(COND	[(EQ A NIL)(RETURN NIL]
		[ (EQ (CAR A) IND)
		   (RETURN (CADR A]
		[ (SETQ A (CDDR A))
		   (GO LOOP]]

'(DEF APPEND (LAMBDA (X Y)
   (PROG (L L*)
	(COND	[ (NULL X)
		   (RETURN Y]
		[ (NULL Y)
		   (RETURN X])
	(SETQ L* (SETQ L (CONS (CAR X))))
LOOP	(COND	[ (SETQ X (CDR X))
		   (SETQ L* (CDR (RPLACD L* (CONS (CAR X)))))
		   (GO LOOP])
	(RPLACD L* Y)
	(RETURN L]

'(DEF AND (NLAMBDA ($A$)
   (PROG ($R$)
	(COND	[ (NULL $A$)
		   (RETURN T])
LOOP	(COND	[ (SETQ $R$ (EVAL (CAR $A$)))
		  (COND	[ (SETQ $A$ (CDR $A$))
			   (GO LOOP]
			[ T
			   (RETURN $R$]]]

'(DEF OR (NLAMBDA ($O$)
   (PROG ($R$)
	(COND	[ (NULL $O$)
		   (GO END])
LOOP	(COND	[ (SETQ $R$ (EVAL (CAR $O$)))
		   (RETURN $R$]
		[ (SETQ $O$ (CDR $O$))
		   (GO LOOP])
END	]

'(DEF MEMBER (LAMBDA ($A$ $L$)
   (PROG ()
	(COND	[ (NULL $L$)
		   (GO END])
LOOP	(COND	[ (EQ $A$ (CAR $L$))
		   (RETURN T]
		[ (SETQ $L$ (CDR $L$))
		   (GO LOOP])
END	]
(DEF MEMCAR (LAMBDA (A L)
   (PROG ()
	(COND	[ (NULL L)
		   (GO END])
LOOP	(COND	[ (EQ A (CAAR L))
		   (RETURN (CDAR L]
		[ (SETQ L (CDR L))
		   (GO LOOP])
END	]

(DEF MEMCDR (LAMBDA (A L)
   (PROG ()
	(COND	[ (NULL L)
		   (GO END])
LOOP	(COND	[ (EQ A (CDAR L))
		   (RETURN (CAAR L]
		[ (SETQ L (CDR L))
		   (GO LOOP])
END	]

'(DEF CONC (LAMBDA (L1 L2)
   (PROG (L1*)
	(COND	[ (NULL L2)
		   (GO END]
		[ (NULL (SETQ L1* L1))
		   (RETURN L2])
LOOP	(COND	[ (CDR L1*)
		   (SETQ L1* (CDR L1*))
		   (GO LOOP])
	(RPLACD L1* L2)
END	(RETURN L1]
'(DEF ADD1 (LAMBDA ($X$) (ADD $X$ 1]

'(DEF SUB1 (LAMBDA ($X$) (DIFF $X$ 1]

'(DEF LIST (NLAMBDA ($L$)
   (PROG ($V$ $V$*)
	(COND	[ (NULL $L$)
		   (GO END])
	(SETQ $V$* (SETQ $V$ (CONS (EVAL (CAR $L$)))))
LOOP	(COND	[ (SETQ $L$ (CDR $L$))
		   (SETQ $V$* (CDR (RPLACD $V$* (CONS (EVAL (CAR $L$))))))
		   (GO LOOP])
END	(RETURN $V$]

'(DEF FUNCTION (NLAMBDA ($X$) (COND [ (ATOM (CAR $X$)) (GETD (CAR $X$))]
				   [ T (CAR $X$]]

'(DEF LENGTH (LAMBDA ($L$)
   (PROG (I)
	(COND	[ (ATOM $L$)
		   (RETURN 0])
	(SETQ I 1)
LOOP	(COND	[ (SETQ $L$ (CDR $L$))
		   (SETQ I (ADD I 1))
		   (GO LOOP])
	(RETURN I]

'(DEF APPLY* (NLAMBDA ($X$)
	(EVAL (CONS (EVAL (CAR $X$)) (CDR $X$]

'(DEF MAPCAR (LAMBDA (MAPCARF $S$)
   (PROG ($R$ $R$*)
	(COND	[ (NULL $S$)
		   (GO END])
	(SETQ $R$* (SETQ $R$ (CONS (APPLY* MAPCARF (CAR $S$)))))
LOOP	(COND	[ (SETQ $S$ (CDR $S$))
		   (SETQ $R$* (CDR (RPLACD $R$* (CONS (APPLY* MAPCARF (CAR $S$))))))
		   (GO LOOP])
END	(RETURN $R$]

'(DEF MAPC (LAMBDA (MAPCF $S$)
   (PROG ($R$)
	(COND	[ (NULL $S$)
		   (GO END])
LOOP	(SETQ $R$ (APPLY* MAPCF (CAR $S$)))
	(COND	[ (SETQ $S$ (CDR $S$))
		   (GO LOOP])
END	(RETURN $R$]

'(DEF COPY (LAMBDA (L)
	(COND	[ (ATOM L)
		   L]
		[ (NUMBP L)
		   L]
		[ T
		   (MAPCAR
		    (FUNCTION COPY)
		    L]]

(DEF DELETE (LAMBDA (A B)
	(COND	[ (NULL B)
		   NIL]
		[ (EQ A (CAR B))
		   (CDR B]
		[ (EQ A (CADR B))
		   (RPLACD B (CDDR B))
		   B]
		[ T
		   (DELETE A (CDR B))
		   B]]

'(DEF LAST (LAMBDA (A)
	(COND	[ (NULL A)
		   NIL]
		[ (NULL (CDR A))
		   A]
		[ T
		   (LAST (CDR A]]

(DEF REVERSE (LAMBDA (X)
   (PROG (TEMP)
	(COND	[ (OR (ATOM X)
		      (NUMBP X))
		   (RETURN X]
		[ (NULL (CDR X))
		   (RETURN (CONS (CAR X]
		[ T
		   (SETQ TEMP (REVERSE (CDR X)))
		   (RPLACD (LAST TEMP) (CONS (CAR X)))
		   (RETURN TEMP]]
(DEF PP (NLAMBDA ($X$)
   (PPEVQ (CAR $X$]

(DEF PPEVQ (LAMBDA ($X$)
   (PROG ()
	(COND	[ (NULL
		  (COND	[ (ATOM $X$)
			   (SETQ $X$ (EVAL $X$]
			[ T
			   $X$]))
		   (GO END])
LOOP	(TERPRI)
	($PATOM1 ' "(DEF ")
	(PRIN1 (CAR $X$))
	($PRPR (GETD (CAR $X$) ))
	($PATOM1 RPAR)
	(TERPRI)
	(COND	[ (SETQ $X$ (CDR $X$))
		   (GO LOOP])
END	]

(DEF $PRPR (LAMBDA (X)
	(COND	[ T
		   (LINELENGTH 70)
		   (TERPRI)
		   ($PRDF X 1 0]]
(DEF $PRDF (LAMBDA (L N M)
   (PROG ()
	($TOCOLUMN N)
A	(COND	[ (OR (ATOM L)
		      (LESSP (ADD M (FLATSIZE L (CHRCT)))
		             (CHRCT)))
		   (RETURN (PRIN1 L]
		[ (AND ($PATOM1 LPAR)
		       (LESSP 2 (LENGTH L))
		       (ATOM (CAR L)))
		   (PROG (C F G H)
			(SETQ G
			 (COND	[ (MEMBER (CAR L) '(LAMBDA NLAMBDA))
				   -7]
				[ T
				   0]))
			(SETQ F (EQ (PRIN1 (CAR L)) 'PROG))
			($PATOM1 ' " ")
			(SETQ C ($DINC))
		   A	($PRD1
			 (CDR L)
			 (ADD
			  C
			  (COND	[ (SETQ H (AND F
				               (CADR L)
				               (ATOM (CADR L))))
				   -5]
				[ T
				   G])))
			(COND	[ (CDR (SETQ L (CDR L)))
				  (COND	[ (OR (NULL H) (ATOM (CADR L)))
					   (TERPRI])
				   (GO A]]
		[ (PROG (C)
			(SETQ C ($DINC))
		  A	($PRD1 L C)
			(COND	[ (SETQ L (CDR L))
				   (TERPRI)
				   (GO A]])
B	($PATOM1 RPAR]
(DEF $PRD1 (LAMBDA (L N)
   (PROG ()
	($PRDF
	 (CAR L)
	 N
	 (COND	[ (NULL (SETQ L (CDR L)))
		   (ADD M 1]
		[ (ATOM L)
		   (SETQ N)
		   (PLUS 4 M (PNTLEN L]
		[ T
		   M]))
	(COND	[ (NULL N)
		   ($PATOM1 ' " . ")
		   (RETURN (PRIN1 L]]

(DEF FLATSIZE (LAMBDA (L $MLEN)
   (PROG ($LEN)
	(SETQ $LEN 0)
	($FLT1 L)
	(RETURN $LEN]

(DEF $FLT1 (LAMBDA (L)
	(COND	[ (OR (ATOM L)
		      (NUMBP L))
		   ($ADDL (PNTLEN L]
		[ (AND (CDR L)
		       (OR (ATOM (CDR L))
		           (NUMBP (CDR L))))
		   ($FLT1 (CAR L))
		   ($ADDL (PNTLEN (CDR L]
		[ T
		   ($ADDL (ADD (LENGTH L) 2))
		   (MAPC (GETD '$FLT1 ) L]]
(DEF $ADDL (LAMBDA (N)
	(COND	[ T
		   (SETQ $LEN (ADD $LEN N))
		  (COND	[ (GREATERP $LEN $MLEN)
			   (RETURN 1000]]]

(DEF $DINC (LAMBDA () (DIFF (LINELENGTH) (CHRCT]

(DEF $TOCOLUMN (LAMBDA (N)
   (PROG ()
LOOP	(COND	[ (LESSP ($DINC) N)
		   ($PATOM1 ' " ")
		   (GO LOOP]]

(DEF PRIN1 (LAMBDA (X)
	(COND	[ T
		   (PRINT X POPORT)
		   X]]

(DEF TERPRI (LAMBDA () (TERPR POPORT]

(DEF CHRCT (LAMBDA () (CHARCNT POPORT]

(DEF $PATOM1 (LAMBDA (X) (PATOM X POPORT]